import pygame

class InputClass:

     def __init__(self):
          self.teclas = []
          self.teclas_a_liberar = []
     
     def remove_tecla(self, tecla):
          if tecla in self.teclas:
               self.teclas.pop(self.teclas.index(tecla))
               return True
          return False
          
     
     def get_input(self):
          
          self.teclas_novas = []
          self.teclas_liberadas = []
          
          for i in self.teclas_a_liberar:
               self.remove_tecla(i)
          
          self.teclas_a_liberar = [] # teclas a liberar procesadas, remove-las da lista          
          
          for event in pygame.event.get():
               if event.type == pygame.QUIT:
                    return False
           
               if event.type == pygame.KEYDOWN:
                    self.teclas_novas.append(event.key)

               if event.type == pygame.KEYUP:
                    self.teclas_liberadas.append(event.key)

          for tecla in self.teclas_liberadas:
               if tecla in self.teclas_novas:
                    self.teclas_a_liberar.append(tecla)
               else:
                    self.remove_tecla(tecla)
          
          
          self.teclas.extend(self.teclas_novas)
          return True


     def check(self, tecla):
          return tecla in self.teclas
     
     def check_once(self, tecla):
          return self.remove_tecla(tecla)


Input = InputClass()